import Vue from 'vue'
import Vuex from 'vuex'
let myRequest = require('../utils/request');
let utils = require('../utils/util');
Vue.use(Vuex)
const store = new Vuex.Store({
	state: {
		query: {}, //页面查询参数


		options: {}, // page.onLoad(options)  option参数
		user_info: uni.getStorageSync('user_info') || {}, //用户信息

		CONFIG: uni.getStorageSync('CONFIG') || {}, //配置文件


		//聊天专用
		chat_friends: uni.getStorageSync('chat_friends') || [], //朋友列表
		chat_groups: uni.getStorageSync('chat_groups') || [], //群聊列表
		chat_notes: uni.getStorageSync('chat_notes') || [], //消息列表

		chat_user_list: [], //单人消息列表
		chat_group_list: [], //多人消息列表

		voice_src: '', //正在播放的音频

		remark_obj: uni.getStorageSync('remark_obj') || {}, //备注对象

		chat_checked: false, //是否开启聊天信息多选，
		chat_checked_arr: [], //已选择的聊天信息
		show_msg_edit: {}, //是否开始编辑聊天信息
		show_read_msg: false, //是否显示消息已读未读
		APP_FONT_SIZE: uni.getStorageSync('APP_FONT_SIZE') || 'medium', //是否显示消息已读未读


		server_list: [], //客服消息列表
		chat_group_info: {
			list: [],
			group: {}
		}, //群聊信息

		create_course_info: uni.getStorageSync('create_course_info') || {}, //创建课程需要的数据

		app_chat_type: '', //当前最新的聊天类型
		app_chat_hidden_arr: [], //被覆盖掉的聊天界面 [id1 , id2]

		group_remark_obj: {}, //群聊备注

		show_notice_dot: 0, //显示系统通知
		show_friend_new_dot: 0, //显示是否有新的好友
	},
	mutations: {

		//赋值
		vuexSet(state, data) {
			state[data.name] = data.value;
			//特别操作 获取用户好友备注
			if (data.name == 'chat_friends') {
				console.log('设置好友备注......................');
				let obj = {};
				data.value.forEach(val => {
					obj[val.id] = val?.relUserFriendGroup
						?.remark || '';
				})
				state.remark_obj = obj;
				uni.setStorage({
					key: 'remark_obj',
					data: obj,
				});
			}
			//设置tabbar0 红点
			if (data.name == 'chat_notes') {

				let num = state.chat_notes.reduce((num, val) => num + Number(val.readNum), 0);
				console.log('numxxxxxxxxxxxxxxxxxxxxxx', num);
				if (num > 0) {
					uni.showTabBarRedDot({
						index: 0,
					});
				} else {
					uni.hideTabBarRedDot({
						index: 0,
					});
				}

			}
		},

	},
	getters: {

	},
	actions: {
		//更新全局数据
		refresh({
			commit,
			state
		}, obj) {

			myRequest({
				url: '/chat/configList',
			}).then(res => {
				if (res.status == 200) {
					console.log('配置文件', res)
					commit('vuexSet', {
						name: 'CONFIG',
						value: res.data || {}
					})
					uni.setStorage({
						key: 'CONFIG',
						data: res.data || {}
					});
				}
			})

		},
		//更新用户身份
		refresh_user({
			commit,
			state
		}, obj) {
			if (!uni.getStorageSync('ACCESS_TOKEN')) {
				//未登录 不连接
				return;
			}

			myRequest({
				url: '/user/userInfo',
				data: {
					id: state.user_info.id || ''
				},
				toast: false,
			}).then(res => {
				if (res && res.status == 200) {


					let time_now = new Date().getTime();
					res.data.VIP = '';
					if (res.data.vipEndTime > time_now) {
						res.data.VIP = 'vip';
						res.data.vip_end_time = utils.dateFormat('YY-mm-dd', new Date(res.data
							.vipEndTime));
						res.data.hasVip = true;
						res.data.hasVipTime = res.data.vip_end_time;
					}

					if (res.data.svipEndTime > time_now) {
						res.data.VIP = 'svip';
						res.data.vip_end_time = utils.dateFormat('YY-mm-dd', new Date(res.data
							.svipEndTime));
						res.data.hasSvip = true;
						res.data.hasSvipTime = res.data.vip_end_time;
					}


					commit('vuexSet', {
						name: 'user_info',
						value: res.data
					});
					uni.setStorage({
						key: 'user_info',
						data: res.data || {}
					});

				}
			})
		},
		//更新我的好友
		refresh_friend({
			commit,
			state
		}, obj) {
			if (!uni.getStorageSync('ACCESS_TOKEN')) {
				//未登录 不连接
				return;
			}

			myRequest({
				url: '/friend/getFriendList',
				chat: true,
				toast: false,
				login: false,
			}).then(res => {
				if (res && res.status == 200 && res.data) {

					commit('vuexSet', {
						name: 'chat_friends',
						value: res.data
					});
					uni.setStorage({
						key: 'chat_friends',
						data: res.data || []
					});

				}
			})
		},
		//更新我的群聊
		refresh_group({
			commit,
			state
		}, obj) {
			if (!uni.getStorageSync('ACCESS_TOKEN')) {
				//未登录 不连接
				return;
			}

			myRequest({
				url: '/group/getGroupList',
				chat: true,
				toast: false,
				login: false,
			}).then(res => {
				if (res && res.status == 200 && res.data) {

					commit('vuexSet', {
						name: 'chat_groups',
						value: res.data
					});
					uni.setStorage({
						key: 'chat_groups',
						data: res.data || []
					});

				}
			})
		},
		//更新用户推送标识
		refresh_pushid({
			commit,
			state
		}, obj) {
			if (!uni.getStorageSync('ACCESS_TOKEN')) {
				//未登录 不连接
				return;
			}
			let push_clientid = '';
			let set_pcid = (id) => {
				myRequest({
					url: '/login/setPushId',
					chat: true,
					method: 'POST',
					toast: false,
					login: false,
					data: {
						pushClientId: id,
					}
				}).then(res => {
					if (res && res.status == 200) {

						// commit('vuexSet', {
						// 	name: 'chat_groups',
						// 	value: res.data
						// });
						uni.setStorage({
							key: 'setPushId',
							data: push_clientid
						});

					}
				})
			};
			// #ifdef APP-PLUS
			// uni.getPushClientId({
			// 	success: (res) => {
			// 		push_clientid = res.cid
			// 		console.log('客户端推送标识:', push_clientid);
			// 		set_pcid(push_clientid);

			// 	},
			// 	fail(err) {
			// 		console.log('客户标识', err)

			// 	}
			// })
			// #endif
			// #ifdef H5
			// set_pcid(new Date().getTime());
			// #endif




		},


	}

})
export default store